home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / etc / init.d / iptables < prev    next >
Text File  |  2006-01-09  |  3KB  |  112 lines

  1. #!/sbin/runscript
  2. # Copyright 1999-2005 Gentoo Foundation
  3. # Distributed under the terms of the GNU General Public License v2
  4. # $Header: /var/cvsroot/gentoo-x86/net-firewall/iptables/files/iptables-1.3.2.init,v 1.2 2005/08/10 23:11:12 vapier Exp $
  5.  
  6. opts="save reload panic"
  7.  
  8. iptables_name=${SVCNAME}
  9. if [[ ${iptables_name} != "iptables" && ${iptables_name} != "ip6tables" ]] ; then
  10.     iptables_name="iptables"
  11. fi
  12.  
  13. iptables_bin="/sbin/${iptables_name}"
  14. case ${iptables_name} in
  15.     iptables)  iptables_proc="/proc/net/ip_tables_names"
  16.                iptables_save=${IPTABLES_SAVE};;
  17.     ip6tables) iptables_proc="/proc/net/ip6_tables_names"
  18.                iptables_save=${IP6TABLES_SAVE};;
  19. esac
  20.  
  21. depend() {
  22.     before net
  23.     use logger
  24. }
  25.  
  26. set_table_policy() {
  27.     local chains table=$1 policy=$2
  28.     case ${table} in
  29.         nat)    chains="PREROUTING POSTROUTING OUTPUT";;
  30.         mangle) chains="PREROUTING INPUT FORWARD OUTPUT POSTROUTING";;
  31.         filter) chains="INPUT FORWARD OUTPUT";;
  32.         *)      chains="";;
  33.     esac
  34.     local chain
  35.     for chain in ${chains} ; do
  36.         ${iptables_bin} -t ${table} -P ${chain} ${policy}
  37.     done
  38. }
  39.  
  40. checkkernel() {
  41.     if [[ ! -e ${iptables_proc} ]] ; then
  42.         eerror "Your kernel lacks ${iptables_name} support, please load"
  43.         eerror "appropriate modules and try again."
  44.         return 1
  45.     fi
  46.     return 0
  47. }
  48. checkconfig() {
  49.     if [[ ! -f ${iptables_save} ]] ; then
  50.         eerror "Not starting ${iptables_name}.  First create some rules then run:"
  51.         eerror "/etc/init.d/${iptables_name} save"
  52.         return 1
  53.     fi
  54.     return 0
  55. }
  56.  
  57. start() {
  58.     checkconfig || return 1
  59.     ebegin "Loading ${iptables_name} state and starting firewall"
  60.     ${iptables_bin}-restore ${SAVE_RESTORE_OPTIONS} < "${iptables_save}"
  61.     eend $?
  62. }
  63.  
  64. stop() {
  65.     if [[ ${SAVE_ON_STOP} == "yes" ]] ; then
  66.         save || return 1
  67.     fi
  68.     checkkernel || return 1
  69.     ebegin "Stopping firewall"
  70.     for a in $(<${iptables_proc}) ; do
  71.         ${iptables_bin} -F -t $a
  72.         ${iptables_bin} -X -t $a
  73.  
  74.         set_table_policy $a ACCEPT
  75.     done
  76.     eend $?
  77. }
  78.  
  79. reload() {
  80.     checkkernel || return 1
  81.     ebegin "Flushing firewall"
  82.     for a in $(<${iptables_proc}) ; do
  83.         ${iptables_bin} -F -t $a
  84.         ${iptables_bin} -X -t $a
  85.     done
  86.     eend $?
  87.  
  88.     start
  89. }
  90.  
  91. save() {
  92.     ebegin "Saving ${iptables_name} state"
  93.     touch "${iptables_save}"
  94.     chmod 0600 "${iptables_save}"
  95.     ${iptables_bin}-save ${SAVE_RESTORE_OPTIONS} > "${iptables_save}"
  96.     eend $?
  97. }
  98.  
  99. panic() {
  100.     checkkernel || return 1
  101.     [[ -e ${svcdir}/started/${iptables_name} ]] && svc_stop
  102.  
  103.     ebegin "Dropping all packets"
  104.     for a in $(<${iptables_proc}) ; do
  105.         ${iptables_bin} -F -t $a
  106.         ${iptables_bin} -X -t $a
  107.  
  108.         set_table_policy $a DROP
  109.     done
  110.     eend $?
  111. }
  112.